Electronic images are often manipulated to produce variant forms of the images. For example, many existing off-the-shelf software image viewers and editors allow an image to be manipulated within a display for purposes of obtaining different perspective views of the image. Some viewing functions include zooming in on different locations within the image, panning out on different locations within the image, scaling the image by spatially reallocating the content of the image, rotating the image, and the like. Of course, image manipulation is also useful when printing images, mining the images for information, correcting distortions or creating distortions within the images, integrating the images into other software applications, image morphing and the like.
Manipulation of pixels within an image is a processor and memory expensive operation, since the number of pixels within a complete image is large, occupying a substantial amount of memory. The problem of decreased processing throughput associated with pixel manipulation, is exacerbated when an image has increased quality, since a better quality image indicates that the image includes more pixels. The number of pixels within an image is often described by the number of pixels included within a square inch of the image and is referred to as dots per square inch (DPI). As an image's DPI increases, the processing and memory required to manipulate the image increases as well.
Image manipulation is often referred to as image warping, and the existing techniques of warping an image into two dimensions require two processing passes on each pixel within the image. The first pass of the image produces an intermediate version of the source image where all the pixels within the source image are warped in one dimension or spatial transform (e.g., along the y-axis or vertical axis). The second pass occurs against the intermediate image produced from the first pass and warps all the pixels within the intermediate image in a second dimension (e.g., along the x-axis or horizontal axis). As one skilled in the art will recognize, a popular two-pass process for image warping is the FANT process. Moreover, as is readily apparent warping a two-dimensional image requires substantial processing and substantial temporary memory (e.g., volatile memory) to house the intermediate warped image.
As pixels within an image are warped in each direction, the original pixels must be mapped or transformed to the intermediate or final pixels. The process of determining this transformation is referred to as warping. Warping techniques are well known to those skilled in the art, and a variety of linear and non-linear techniques are widely available. For example, consider a linear warping technique of an input image having 100 pixels along the vertical axis that is to be mapped to a target image having 50 pixels along the vertical axis. The input image is warped by using a warping function that averages the intensity values associated with every 2 adjacent pixels in the input image. The single averaged intensity value is then mapped to the target image. Of course, the above example is for producing a one-dimensional transform, a second dimensional (e.g., spatial) transform would require an additional processing pass on the pixels, creating added latency.
Further, warping techniques can produce artifacts (e.g., defects or aliasing) in the resulting warped image, because any technique used is an approximation, and correspondingly the warping techniques are not error free. As a result, warped images often require additional filtering techniques to produce better quality warped images. Filtering techniques are also well known to those skilled in the art and are used to correct imprecise pixel mappings.
Furthermore, many of the most reliable non-linear warping techniques are produced independent of the process of mapping image pixels. Accordingly, these techniques often produce a mapping for a pixel in two dimensions. Yet, existing image warping processes, such as the FANT process, require warping to occur in two passes. Correspondingly, the FANT process must try to decompose the warping transformation function into two independent functions in order to process the image in two separate passes to accommodate the x-axis and y-axis warping. However, not all warping transformation functions can be separated into to separable functions along both the x and y axis.
A single warping function is said to be separable if the x axis warping can be independently separated from the y axis warping to produce two independent functions which when combined are identical to the original single warping function for both the x and y axis. Therefore, when a warping function is non separable, the FANT technique attempts to separate the x and y warping functions anyway, which results in artifacts being introduced into the warped image produced by the FANT technique. As one skilled in the art will appreciate, this introduces additional error into the FANT process and also limits the available warping algorithms, which the FANT process can utilize. Moreover, the existing FANT process requires pixel intensity values to be represented in floating point format, this further restricts the available warping algorithms, which are useable during an image warping process.
As is apparent there exists a need for improved image warping methods and systems to reduce the need for a dual pass warped image, requiring no intermediate memory and no filtering clean-up techniques. As is apparent, a dual pass warping technique also creates unnecessary process latency. Furthermore, there exists a need to use existing warping techniques without attempting to decompose the techniques into two independent functions with each decomposed function operating in a single dimension. Finally, a need exists to permit warping techniques to be used for pixels within a source image having fixed point representation.